home *** CD-ROM | disk | FTP | other *** search
/ Whiteline: delta / whiteline CD Series - delta.iso / progtool / modula2 / module / druckebi.mod < prev    next >
Text File  |  1995-11-25  |  5KB  |  169 lines

  1. IMPLEMENTATION MODULE  DruckeBierListe;
  2.  
  3. FROM Strings IMPORT ClearStr,IsEmptyStr,EqualStr,LeftStr,SubStr,Length,
  4.                     Concat,Compare,CompareResult;
  5. FROM Bliste IMPORT List,AtFirst,AtLast,Empty,Next,Prev,AppendElement,Kunde,
  6.                    First,MakeList,KillList,GetValue,SetValue,RemoveElement,
  7.                    BubbleSort,VglProc,Last;
  8. FROM InOut IMPORT WriteString,WriteLn,WriteInt,Done,
  9.                    OpenOutput,CloseOutput;
  10. FROM LongInOut IMPORT WriteLongInt,ReadLongInt;
  11. FROM EdiereBierListe IMPORT ComputeCustomer,BierListe;
  12. FROM PreisErfassung IMPORT DD,MM,JJ, VerkaufsPreis;
  13. FROM AES IMPORT FormAlert;
  14.  
  15. FROM BlRscInc IMPORT RECHNUNG, BIEREN, NAMEN;
  16.  
  17.  
  18. VAR Customer  :Kunde;
  19.  
  20. PROCEDURE SortiereRechnung(K1,K2:Kunde):BOOLEAN;
  21. BEGIN
  22.    RETURN K1.Rechnung>K2.Rechnung
  23. END SortiereRechnung;
  24.  
  25. PROCEDURE SortiereNamen(K1,K2:Kunde):BOOLEAN;
  26. VAR result:CompareResult;
  27. BEGIN
  28.   result:=Compare(K1.Name,K2.Name);
  29.   RETURN result=less
  30. END SortiereNamen;
  31.  
  32. PROCEDURE SortiereBierKonsum(K1,K2:Kunde):BOOLEAN;
  33. BEGIN
  34.    RETURN  K1.Biere>K2.Biere
  35. END SortiereBierKonsum;
  36.  
  37. PROCEDURE SortiereBierListe(Nach:INTEGER);
  38. VAR SortiereNach : VglProc;
  39. BEGIN
  40.     IF Nach=RECHNUNG THEN
  41.         SortiereNach:=SortiereRechnung;
  42.     ELSIF Nach= BIEREN THEN
  43.         SortiereNach:=SortiereBierKonsum;
  44.    (*ELSIF Nach=NAMEN THEN*)
  45.    ELSE
  46.         SortiereNach:=SortiereNamen;
  47.    END(*IF*);
  48.    BubbleSort(BierListe,SortiereNach);
  49. END SortiereBierListe;
  50.  
  51. PROCEDURE DruckOK():BOOLEAN;
  52. VAR s: ARRAY [0..127] OF CHAR;
  53.     formret : INTEGER;
  54. BEGIN
  55.    s :='[2][Druck in Ordnung?|Ja = Druck OK|Nein = Druck wiederholen][  Ja  | Nein ]';
  56.    formret:=FormAlert(1,s);
  57.    RETURN formret=1
  58. END DruckOK;
  59.  
  60.  
  61.  
  62.  
  63. PROCEDURE PrintBierliste(Ordnen,LeerZeilen:INTEGER);
  64. VAR OK                     :BOOLEAN;
  65.     Print2Screen           :BOOLEAN;
  66.     i,j                    :INTEGER;
  67.     GesammtBetrag,Rechnung :LONGINT;
  68.     Bierstriche,Limostriche:INTEGER;
  69.     Alert                  : ARRAY [0..127] OF CHAR;
  70.     Formret                :INTEGER;
  71.  
  72. PROCEDURE PrintCustomer;
  73. BEGIN
  74.    WriteString('------------------|----------|--------------------------|--------------------|');
  75.    WriteLn;
  76.    WriteString(Customer.Name);
  77.    FOR i:= Length(Customer.Name) TO 17 DO
  78.        WriteString(' ');
  79.    END(*FOR*);
  80.    WriteString('|');
  81.    WriteLongInt((Customer.Rechnung DIV  100D),3);
  82.    WriteString('.');
  83.    WriteLongInt((Customer.Rechnung MOD 100D),2);
  84.    WriteString(' DM |');
  85.    WriteString('                          |                    |');
  86.  
  87.    WriteLn;
  88. END PrintCustomer;
  89.  
  90. BEGIN
  91.   Alert:= '[3][Drucker nicht bereit !|Ausdruck auf Bildschirm!][ OK |Cancel]';
  92.   REPEAT
  93.    Print2Screen:=FALSE;
  94.    GesammtBetrag:=0; Bierstriche:=0;Limostriche:=0;
  95.    Rechnung:=0D;
  96.    First(BierListe);
  97.    LOOP
  98.          ComputeCustomer;
  99.          IF AtLast(BierListe) THEN
  100.             EXIT;
  101.          END(*IF*);
  102.          Next(BierListe);
  103.    END(*LOOP*);
  104.    SortiereBierListe(Ordnen);
  105.    First(BierListe);
  106.    OpenOutput('PRN:');
  107.    IF ~Done THEN
  108.      Formret:=FormAlert(1,Alert);
  109.      Print2Screen:=Formret=1;
  110.    END(*IF*);
  111.    IF (~Done AND  Print2Screen) OR Done THEN
  112.      WriteString('          Abrechnung vom ');
  113.      WriteString(DD);WriteString('.');
  114.      WriteString(MM);WriteString('.');
  115.      WriteString('19');WriteString(JJ);
  116.      WriteString('    Gespeichert als :');WriteString(JJ);WriteString('_');WriteString(MM);
  117.      WriteString('_');WriteString(DD);WriteString('.DAT');
  118.      WriteLn;
  119.      WriteString('                                    ');
  120.      WriteString(' Bier'); WriteInt(VerkaufsPreis.BierPreis DIV  100,2);
  121.      WriteString('.');WriteInt(VerkaufsPreis.BierPreis MOD 100,2);
  122.      WriteString('               Limo ');WriteInt(VerkaufsPreis.LimoPreis DIV 100,2);
  123.      WriteString('.');WriteInt(VerkaufsPreis.LimoPreis MOD 100,2);WriteLn;
  124.      LOOP
  125.          OK:=GetValue(BierListe,Customer);
  126.          PrintCustomer;
  127.          IF AtLast(BierListe) THEN
  128.             EXIT;
  129.          END(*IF*);
  130.          Next(BierListe);
  131.      END(*LOOP*);
  132.      Customer.Name:='#               ';
  133.      Customer.Rechnung:=0;
  134.      FOR j:=0 TO LeerZeilen  DO
  135.        PrintCustomer;
  136.      END(*FOR*);
  137.      First(BierListe);
  138.      LOOP
  139.         OK:=GetValue(BierListe,Customer);
  140.         Rechnung:= Rechnung+ Customer.Rechnung;
  141.         Bierstriche:= Bierstriche+Customer.Biere;
  142.         Limostriche:= Limostriche+Customer.Limos;
  143.         GesammtBetrag:= GesammtBetrag+Customer.Uebertrag;
  144.         IF AtLast(BierListe) THEN EXIT END(*IF*);
  145.         Next(BierListe);
  146.      END(*LOOP*);
  147.      Customer.Name:='Aussenstände: ';
  148.      Customer.Uebertrag:=GesammtBetrag;
  149.      Customer.Biere:=Bierstriche;
  150.      Customer.Limos:=Limostriche;
  151.      Customer.Rechnung:=Rechnung;
  152.      PrintCustomer;
  153.      WriteString('Übertrag : ');   WriteLongInt(GesammtBetrag DIV 100D,5);
  154.      WriteString('.');   WriteLongInt(GesammtBetrag MOD  100D,2);
  155.      WriteString(', Limos : ');  WriteInt(Limostriche,4);
  156.      WriteString(', Biere : ');    WriteInt(Bierstriche,4);WriteLn;
  157.      WriteString(12C);
  158.      IF Print2Screen THEN
  159.         WriteLn;
  160.         WriteString(' Bitte Esc drücken zur Wiederherstellung des Bildschirms ')
  161.      END(*IF*);
  162.      CloseOutput;
  163.    END(*IF*);
  164.   UNTIL DruckOK();
  165. END PrintBierliste;
  166.  
  167.  
  168. END DruckeBierListe.
  169.